package cn.iocoder.yudao.module.form.service;


import cn.iocoder.yudao.module.form.dataobject.FormChart;
import cn.iocoder.yudao.module.form.dataobject.FormTable;
import cn.iocoder.yudao.module.form.dataobject.FormTableColumn;
import cn.iocoder.yudao.module.form.dataobject.StackColumnData;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public interface IFormService {

    List<FormTable> getTable();

    List<FormTableColumn> getTableColumn(String tableName);

    /**
     * 初始化报表内图表
     */
    public ArrayList<FormChart> initForm(Long formId);

    /**
     * 在报表中新建图表
     */
    public Long insertIntoFormChart(FormChart formChart);

    /**
     * 在报表中修改图表
     */
    public FormChart updateFormChart(FormChart formChart);

    /**
     * 在报表中删除图表
     */
    public Long deleteFormChart(Long chartId,Long formId);

    /**
     * 获取基础折线图
     */
    HashMap<String, Object>  getlineChart(String tableName, String xcolumn, String ycolumn);

    /**
     * 获取基础柱状图
     */
    HashMap<String, Object> getSimplebarChart(String tableName,String xcolumn,String ycolumn);

    /**
     * 获取堆叠柱状图
     */
    HashMap<String, Object> getStackedColumnChart(String tableName,String xcolumn,String ycolumn,String type);

    /**
     * 获取多数据柱状图
     */
    public HashMap<String, Object> getMulDataChart(String tableName, String xcolumn, String ycolumn, String type);

    /**
     * 获取折线柱状图
     */
    public HashMap<String, Object> getLineColumnChart(String tableName, String xcolumn, String ycolumn1, String ycolumn2);

    /**
     * 获取帕累托图
     */
    public HashMap<String, Object> getParetoChart(String tableName, String xcolumn, String ycolumn);

    /**
     * 获取合并累加排序柱状图
     */
    HashMap<String, Object> getSumSortChart(String tableName,String xcolumn,String ycolumn);

    /**
     * 获取饼状图(基础饼状图、环形图、南丁格尔玫瑰图)
     */
    public HashMap<String, Object> getPieChart(String tableName, String xcolumn, String ycolumn);

    /**
     * 获取雷达图
     */
    public HashMap<String, Object> getRadarChart(String tableName, String xcolumn, String ycolumn1,String ycolumn2,
                                                 String ycolumn3,String ycolumn4,
                                                 String ycolumn5,String ycolumn6);

    List<Object> getDataByTable(String tableName);

    List<String> getDataByTableColumn(String tableName,String Column);

    List<String> getDistinctDataByTableColumn(String tableName,String Column);

    List<StackColumnData> getStackColumnData(String tableName, String xcolumn, String ycolumn, String type, List<String> horiList, List<String> typeList);
}
